package br.com.abenildo.controle;

import java.sql.SQLException;
import java.util.ArrayList;

import br.com.abenildo.exception.BibliotecaJaCadastradoException;
import br.com.abenildo.exception.BibliotecaNaoEncontradoException;
import br.com.abenildo.exception.CNPJinvalidoException;
import br.com.abenildo.exception.RepositorioException;
import br.com.abenildo.modelo.IRepositorioBilblioteca;
import br.com.abenildo.modelo.RepositorioBibliotecaBDR;
import br.com.abenildo.modelo.Validacao;

public class ControladorBiblioteca {
	
	//fiz uma conversao porque o compilador obrigou
	//falta revisar aqui
	private IRepositorioBilblioteca repositoriobiblioteca;
	
	public ControladorBiblioteca()throws Exception{
		this.repositoriobiblioteca =  (IRepositorioBilblioteca) new RepositorioBibliotecaBDR();
	}
	
	 public void cadastrarBiblioteca(Biblioteca biblioteca)throws BibliotecaJaCadastradoException,CNPJinvalidoException,RepositorioException,SQLException{
		 CadastroBiblioteca cadastrobiblioteca = new CadastroBiblioteca(this.repositoriobiblioteca);
		 
		 if(!Validacao.validaCNPJ(biblioteca.getCnpj()))throw new CNPJinvalidoException(biblioteca.getCnpj());
			 cadastrobiblioteca.cadastrarBiblioteca(biblioteca);
		 }
	 
	  public void removerBiblioteca(String cnpj)throws BibliotecaNaoEncontradoException,CNPJinvalidoException,RepositorioException,SQLException{
		  CadastroBiblioteca cadastrobiblioteca = new CadastroBiblioteca(this.repositoriobiblioteca);
		  
		  if(!Validacao.validaCNPJ(cnpj))throw new CNPJinvalidoException(cnpj);
			  
			  
			  
			   cnpj = cnpj.replaceAll("\\.|\\-|\\ ", "");
			   cadastrobiblioteca.removerBiblioteca(cnpj);
		  }
		 	
	  public Biblioteca procurarBiblioteca(String cnpj) throws BibliotecaNaoEncontradoException,RepositorioException,CNPJinvalidoException,SQLException{
			 CadastroBiblioteca cadastroBiblioteca = new CadastroBiblioteca(this.repositoriobiblioteca);
			if(!Validacao.validaCNPJ(cnpj))throw new CNPJinvalidoException(cnpj);
			
			
			//LINPANDO A MASCARA DO CNPJ
			cnpj = cnpj.replaceAll("\\.|\\-|\\ ", "");
			
		  return cadastroBiblioteca.procurarBiblioteca(cnpj);
		}
		
		public void atualizarBiblioteca(Biblioteca biblioteca)throws BibliotecaNaoEncontradoException,RepositorioException,CNPJinvalidoException,
																										                 SQLException{
			
			CadastroBiblioteca cadastrobiblioteca = new CadastroBiblioteca(this.repositoriobiblioteca);
			
			if(!Validacao.ValidaCpf(biblioteca.getCnpj()))throw new CNPJinvalidoException(biblioteca.getCnpj());
			 cadastrobiblioteca.atualizarBiblioteca(biblioteca);
		}
		
		 public ArrayList<Biblioteca>listarBiblioteca() throws SQLException{
			 
			CadastroBiblioteca cadastroBiblioteca = new CadastroBiblioteca(this.repositoriobiblioteca);
			cadastroBiblioteca.listarBiblioteca();
			return cadastroBiblioteca.listarBiblioteca();
		 }
	  
		 
	 }


